凡例の構成
グラフの凡例には、グラフに表示されているデータセットに関するデータが表示されます。
構成オプション
凡例の設定は、options.legend
名前空間。グラフの凡例のグローバル オプションは次のように定義されています。Chart.defaults.global.legend
。
名前 | タイプ | デフォルト | 説明 | |
---|---|---|---|---|
display |
boolean |
true |
凡例は表示されますか? | |
position |
string |
'top' |
レジェンドの位置。もっと... | |
align |
string |
'center' |
凡例の配置。もっと... | |
fullWidth |
boolean |
true |
このボックスがキャンバスの幅全体を占めるようにマークします (他のボックスを押し下げます)。日常的な使用においては、これを変更する必要はほとんどありません。 | |
onClick |
function |
クリック イベントがラベル アイテムに登録されたときに呼び出されるコールバック。 | ||
onHover |
function |
「mousemove」イベントがラベル項目の上に登録されたときに呼び出されるコールバック。 | ||
onLeave |
function |
「mousemove」イベントが、以前にホバーされたラベル項目の外側で登録されたときに呼び出されるコールバック。 | ||
reverse |
boolean |
false |
凡例にはデータセットが逆の順序で表示されます。 | |
labels |
object |
を参照してください。凡例ラベルの構成以下のセクション。 | ||
rtl |
boolean |
true 凡例を右から左にレンダリングします。 |
||
textDirection |
string |
キャンバスのデフォルト | これにより、テキストの方向 `'rtl' が強制されます。 | キャンバス上で指定された CSS に関係なく、凡例をレンダリングするためのキャンバス上の 'ltr` |
位置
レジェンドの位置。オプションは次のとおりです。
'top'
'left'
'bottom'
'right'
整列
凡例の配置。オプションは次のとおりです。
'start'
'center'
'end'
デフォルトは'center'
認識されない値の場合。
凡例ラベルの構成
凡例ラベル構成は、labels
鍵。
名前 | タイプ | デフォルト | 説明 |
---|---|---|---|
boxWidth |
number |
40 |
カラーボックスの幅。 |
fontSize |
number |
12 |
テキストのフォント サイズ。 |
fontStyle |
string |
'normal' |
テキストのフォント スタイル。 |
fontColor |
Color |
'#666' |
テキストの色。 |
fontFamily |
string |
"'Helvetica Neue', 'Helvetica', 'Arial', sans-serif" |
凡例テキストのフォント ファミリ。 |
padding |
number |
10 |
カラーボックスの行間のパディング。 |
generateLabels |
function |
凡例内の各項目の凡例項目を生成します。デフォルトの実装は、カラー ボックスのテキストとスタイルを返します。見るレジェンドアイテム詳細については。 | |
filter |
function |
null |
凡例から凡例項目をフィルターします。 2 つのパラメータを受け取ります。レジェンドアイテムそしてチャートデータ。 |
usePointStyle |
boolean |
false |
ラベル スタイルは、対応するポイント スタイルと一致します (サイズは、boxWidth と fontSize の間の最小値に基づきます)。 |
凡例項目インターフェイス
レジェンドに引き継がれるアイテムonClick
関数はから返されるものですlabels.generateLabels
。これらの項目は次のインターフェイスを実装する必要があります。
{
// Label that will be displayed
text: string,
// Fill style of the legend box
fillStyle: Color,
// If true, this item represents a hidden dataset. Label will be rendered with a strike-through effect
hidden: boolean,
// For box border. See https://developer.mozilla.org/en/docs/Web/API/CanvasRenderingContext2D/lineCap
lineCap: string,
// For box border. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/setLineDash
lineDash: number[],
// For box border. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineDashOffset
lineDashOffset: number,
// For box border. See https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D/lineJoin
lineJoin: string,
// Width of box border
lineWidth: number,
// Stroke style of the legend box
strokeStyle: Color,
// Point style of the legend box (only used if usePointStyle is true)
pointStyle: string | Image,
// Rotation of the point in degrees (only used if usePointStyle is true)
rotation: number
}
例
次の例では、凡例を有効にしてグラフを作成し、すべてのテキストを赤色にします。
var chart = new Chart(ctx, {
type: 'bar',
data: data,
options: {
legend: {
display: true,
labels: {
fontColor: 'rgb(255, 99, 132)'
}
}
}
});
カスタムのクリック時アクション
凡例内の項目をクリックしたときに、異なる動作をトリガーしたい場合がよくあります。これは、config オブジェクトのコールバックを使用して簡単に実現できます。
デフォルトの凡例クリック ハンドラーは次のとおりです。
function(e, legendItem) {
var index = legendItem.datasetIndex;
var ci = this.chart;
var meta = ci.getDatasetMeta(index);
// See controller.isDatasetVisible comment
meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;
// We hid a dataset ... rerender the chart
ci.update();
}
代わりに、最初の 2 つのデータセットの表示をリンクしたいとします。それに応じてクリック ハンドラーを変更できます。
var defaultLegendClickHandler = Chart.defaults.global.legend.onClick;
var newLegendClickHandler = function (e, legendItem) {
var index = legendItem.datasetIndex;
if (index > 1) {
// Do the original logic
defaultLegendClickHandler(e, legendItem);
} else {
let ci = this.chart;
[
ci.getDatasetMeta(0),
ci.getDatasetMeta(1)
].forEach(function(meta) {
meta.hidden = meta.hidden === null ? !ci.data.datasets[index].hidden : null;
});
ci.update();
}
};
var chart = new Chart(ctx, {
type: 'line',
data: data,
options: {
legend: {
onClick: newLegendClickHandler
}
}
});
このグラフの凡例をクリックすると、最初の 2 つのデータセットの表示設定がリンクされます。
HTML 凡例
場合によっては、非常に複雑な凡例が必要になることがあります。このような場合、HTML 凡例を生成するのが合理的です。チャートは、generateLegend()
凡例の HTML 文字列を返すプロトタイプのメソッド。
この凡例の生成方法を構成するには、legendCallback
設定プロパティ。
var chart = new Chart(ctx, {
type: 'line',
data: data,
options: {
legendCallback: function(chart) {
// Return the HTML string here.
}
}
});
legendCallback は自動的に呼び出されないため、呼び出す必要があることに注意してください。generateLegend()
このメソッドを使用して凡例を作成するときは、コード内で自分自身を作成する必要があります。